package config

import (
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"log"
)

const PAGE_SIZE int = 10

// 初始化配置信息，同时使用viper来进行监控。
func Init(configPath string) error {
	c := Config{
		configPath,
	}

	if err := c.initConfig(); err != nil {
		return err
	}

	c.watchConfig()
	return nil
}

type Config struct {
	Name string
}

// 这个是用viper来读配置文件的，如果指定了，就读指定的，如果没有指定，就读我们默认的
func (c *Config) initConfig() error {
	if c.Name != "" {
		viper.SetConfigFile(c.Name)
	} else {
		viper.AddConfigPath("conf")
		viper.SetConfigName("config")
	}
	viper.SetConfigType("yaml")

	if err := viper.ReadInConfig(); err != nil {
		return err
	}
	return nil
}

func (c *Config) watchConfig() {
	viper.WatchConfig()
	viper.OnConfigChange(func(e fsnotify.Event) {
		log.Printf("config file changed:%s", e.Name)
	})
}
